package estrategias;

import simulacao.TabelaPayoffs;

public class EstrategiaMaximin extends Estrategia {

	private int numJogador;
	
	public EstrategiaMaximin(int numJogador) {
		this.numJogador = numJogador;
	}

	@Override
	public int getJogada() {
		TabelaPayoffs tabelaPayoffs = TabelaPayoffs.getInstance();
		int[] melhorEstrategia = {-1, -1};
		double melhorPayoff[] = {Double.NEGATIVE_INFINITY,Double.NEGATIVE_INFINITY};
		double mediaPayoffs[] = {0,0};
		
		for (int i = 0; i < 2; i++){
			for (int j = 0; j < 2; j++){
				double payoff = tabelaPayoffs.getPayoff(i, j, numJogador);
				int estrategia = (numJogador==0 ?  i : j );
				int estrategiaAdv = (numJogador==0 ?  j : i );
				mediaPayoffs[estrategiaAdv] += (payoff/2);
				if(payoff > melhorPayoff[estrategiaAdv]){
					melhorPayoff[estrategiaAdv] = payoff;
					melhorEstrategia[estrategiaAdv] = estrategia;
				}
			}
		}
		return (mediaPayoffs[0] > mediaPayoffs[1]) ? melhorEstrategia[1] : melhorEstrategia[0];
	}

}
